<?php
/**
 * 路由配置文件
 * 统一管理API和页面路径，隐藏技术实现细节
 */

// API路由配置
define('API_ROUTES', [
    'stats' => '/api/stats',           // 统计数据API
    'search' => '/api/search',         // 搜索API  
    'navigation' => '/api/navigation', // 导航操作API
    'category' => '/api/category',     // 分类操作API
    'upload' => '/api/upload',         // 文件上传API
]);

// 页面路由配置
define('PAGE_ROUTES', [
    'home' => '/',                     // 首页
    'admin' => '/admin',               // 管理后台首页
    'admin_login' => '/admin/login',   // 登录页面
    'admin_dashboard' => '/admin/dashboard', // 仪表板
    'admin_categories' => '/admin/categories', // 分类管理
    'admin_navigations' => '/admin/navigations', // 导航管理
    'admin_settings' => '/admin/settings', // 系统设置
]);

/**
 * 获取API路径
 * @param string $name API名称
 * @return string API路径
 */
function getApiRoute($name) {
    return API_ROUTES[$name] ?? '/api/' . $name;
}

/**
 * 获取页面路径
 * @param string $name 页面名称
 * @return string 页面路径
 */
function getPageRoute($name) {
    return PAGE_ROUTES[$name] ?? '/' . $name;
}

/**
 * 生成完整的API URL
 * @param string $name API名称
 * @param array $params 查询参数
 * @return string 完整API URL
 */
function getApiUrl($name, $params = []) {
    $route = getApiRoute($name);
    if (!empty($params)) {
        $route .= '?' . http_build_query($params);
    }
    return getUrl($route);
}

/**
 * 生成完整的页面URL
 * @param string $name 页面名称
 * @param array $params 查询参数
 * @return string 完整页面URL
 */
function getPageUrl($name, $params = []) {
    $route = getPageRoute($name);
    if (!empty($params)) {
        $route .= '?' . http_build_query($params);
    }
    return getUrl($route);
}

/**
 * 检查当前路由
 * @param string $route 路由名称
 * @return bool 是否匹配当前路由
 */
function isCurrentRoute($route) {
    $currentPath = $_SERVER['REQUEST_URI'] ?? '/';
    $currentPath = strtok($currentPath, '?'); // 移除查询参数
    $targetPath = getPageRoute($route);
    
    return $currentPath === $targetPath;
}

/**
 * 重定向到指定路由
 * @param string $route 路由名称
 * @param int $statusCode HTTP状态码
 */
function redirectToRoute($route, $statusCode = 302) {
    $url = getPageUrl($route);
    header("Location: $url", true, $statusCode);
    exit;
} 